//页面加载完成
$(function () {

    //列表
    var  role_datagrid =  $("#role__datagrid");
    //对话框
    var  role_dialog =  $("#role_dialog");
    //系统权限列表
    var  permission_all_datagrid =  $("#permission_all_datagrid");
    //自身权限列表
    var  permission_self_datagrid =  $("#permission_self_datagrid");
    //表单
    var  role_form =  $("#role_form");

    //下拉菜单
    var  role_menu =  $("#role_menu");



    var permissionAllData;

    //初始化角色列表界面
    role_datagrid.datagrid({

        fit: true,
        fitColumns: true,
        striped: true,
        url: '/role/list',
        rownumbers: true,
        pagination: true,
        singleSelect: true,
        columns: [[
           // {field: 'id', hidden: true},
            {field: 'name', title: '角色名称', width: 100},
            {field: 'sn', title: '角色编码', width: 100}

        ]],
        toolbar: "#tb"


    })
        //将方法绑定到对象中
        var cmdObj = {

            editRole:function () {
              //获取选中的行,判断是否选中
                var selectedRow = role_datagrid.datagrid("getSelected");
                if(!selectedRow){

                    $.messager.alert("温馨提示","亲,请选择需要编辑的一行","error");
                }

                //处理权限的回显操作
                $.post("/permission/queryByRoleId",{roleId:selectedRow.id},function (data) {
                    //加载数据
                    permission_self_datagrid.datagrid("loadData",data);

                });
                //处理菜单的回显操作
                $.post("/menu/listIdsByRoleId",{roleId:selectedRow.id},function (data) {

                    role_menu.combotree("setValues",data);
                });
                //处理表单的回显
                role_form.form("load",selectedRow);
                //加载缓冲中的数据
                permission_all_datagrid.datagrid("loadData",permissionAllData);
                //设置弹出对话框的信息
                role_dialog.dialog("setTitle","编辑角色");
                role_dialog.dialog("open");

            },

            addRole:function () {
                permission_self_datagrid.datagrid("loadData",{total:0,rows:[]});
                //将该索引的行给删除
                permission_all_datagrid.datagrid("loadData",permissionAllData);

                //清除表单中的数据
                role_form.form("clear");
                //设置dialog标题
                role_dialog.dialog("setTitle","添加角色");
                //弹出对话框
                role_dialog.dialog("open");
            },
            cancelRole:function () {
                role_dialog.dialog("close");
            },
            reloadRole:function () {
                role_datagrid.datagrid("reload");
            },
            //保存操作
            saveRole:function () {
                var url = "/role/save";
                var id = $("#role_id").val();
                if(id){
                    url="/role/edit";
                }
                role_form.form("submit",{
                    url:url,
                    onSubmit: function(param){
                        //在提交表单之前需要额外提交权限的id
                        //permissions[0].id = 1
                        //获取所有的行
                        var rows = permission_self_datagrid.datagrid("getRows");
                        for (var index = 0;index < rows.length;index++){

                                var row = rows[index];
                                param["permissions["+index+"].id"] = row.id;

                        }
                        //获取下拉的id值
                        var ids = role_menu.combotree("getValues");
                        for(var i = 0;i < ids.length;i ++){
                            param["menus["+i+"].id"] = ids[i];
                        }
                    },
                    success:function(data){

                        data = $.parseJSON(data);
                            if(data.success){
                                $.messager.alert("温馨提示",data.message,"info");
                                cmdObj.cancelRole();
                                cmdObj.reloadRole();
                            }else {

                                $.messager.alert("温馨提示",data.message,"error");
                            }

                    }


                })


            }

        }
        //使用js来绑定事件  使用了属性过滤器来完成该操作
    $("a[data-cmd]").click(function(){
        var cmd = $(this).data("cmd");
        //调用方法
        cmdObj[cmd]();
    });
    //end

    //对话框的初始化
    role_dialog.dialog({
        width: 400,
        height: 400,
        closed: true,
        buttons: "#bb"
    })
    //系统全部的权限
    permission_all_datagrid.datagrid({
        fit: true,
        url:"/permission/listAll",
        fitColumns: true,
        striped: true,
        singleSelect: true,
        columns: [[
            {field: 'name', title: '权限名称', width: 100}

        ]],
        onDblClickRow:function (index,row) {
            //将数据追加到右边
            permission_self_datagrid.datagrid("appendRow",row);
            //将该索引的行给删除
            permission_all_datagrid.datagrid("deleteRow",index);

        },
        //权限系统加载完成时的操作
        onLoadSuccess:function (data) {
            //当权限加载完成时存放在缓冲区中,供下次使用,避免从新发送SQL去查询
            permissionAllData  =  $.extend(true,{},data);

        }

    })
    //自身拥有的权限
    permission_self_datagrid.datagrid({
        fit: true,
        fitColumns: true,
        striped: true,
        singleSelect: true,
        columns: [[
            {field: 'name', title: '权限名称', width: 100}

        ]],
        onDblClickRow:function (index,row) {
            //将数据追加到右边
            permission_all_datagrid.datagrid("appendRow",row);
            //将该索引的行给删除
            permission_self_datagrid.datagrid("deleteRow",index);

        },

        //去重复操作
        onLoadSuccess:function (data) {
            //获取右侧自身的所用权限的id
            var ids = $.map(data.rows,function (item) {
                return item.id;
            })
            //获取左侧所有的数据列表
            var rows = permission_all_datagrid.datagrid("getRows");
            for(var i = rows.length -1;i >=0;i--){
                    var row = rows[i];
                    var value = row.id;
                if($.inArray(value,ids)>=0){
                    permission_all_datagrid.datagrid("deleteRow",i);
                }
            }

        }

    })
})
